Статья добавлена: 2014-08-20 10:35:08
Автор: Сергей

Установка нескольких независимых версий PHP


Была поставлена задача объединить, несколько серверов под FreeBSD которые обслуживали сайты.
Как выяснилось версия php на одном сервере была:
  • /usr/local/bin/php -v
    PHP 5.3.10 with Suhosin-Patch (cli) (built: Jul 31 2012 15:40:23)

а на втором:
  • /usr/local/bin/php -v
    PHP 5.4.19 (cli) (built: Sep 17 2013 15:54:45)
На данном сервере был установлена уже связка LAMP из портов.
И с этого момента начинается то о чем я собственно и хотел написать)))
Проблема в том что некоторые сайты на отрез отказывались работать с более новой версией php.
Для этого создаем папочку, переходим в нее:
  • mkdir /usr/local/php53.10/

В данную папочку копируем нужную версию php:
  • fetch:http:/версия php/

распаковываем скачанный архив:
  • tar xf php-5.3.10.tar.bz2

Переходим в папку php-5.3.10
  • cd php-5.3.10/

Конфигурируем пхп с нужными параметрами
  • ./configure --prefix=/usr/local/php53.10/php-5.3.10/ --with-mysql --with-ldap

в моем случаи --with-mysql поддержка mysql;
--with-ldap поддержка лдап;
--prefix=/usr/local/php53.10/php-5.3.10/ путь куда все безобразие будет установлено.
Устанавливаем пхп
  • make install clean

Устанавливаем конфиг php.ini
cp php.ini-development /usr/local/php53.10/php-5.3.10/lib/php.ini
Переходим в конфиг апача:
  • mcedit /usr/local/etc/apache22/httpd.conf

Раскоментируем строчку:
  • ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"

Правим cgi директорию (не уверен что данный вариант идеальный)

  • AllowOverride None
    Options FollowSymLinks +ExecCGI MultiViews SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all

Сохраняем файл и выходим из редактора.
Переходим в папку cgi:
  • cd /usr/local/www/apache22/cgi-bin/

Создаем симлинки:
  • ln -s /usr/local/php53.10/php-5.3.10/bin/php-cgi php5310

После этих манипуляций достаточно добавить в .htaccess вашего сайта следующии строки
  • AddHandler php-cgi .php5310 .php
    Action php-cgi /cgi-bin/php5310

Где php5310 симлинк который мы сделали.
Пример минимальных настроек виртуального хоста:

  • ServerName test.wiset.pp.ua
    DocumentRoot www/test

Для проверки загрузились ли модули:
  • httpd -M | grep cgi